package initialization

import (
	"fmt"
	"github.com/beego/beego/v2/client/orm"
	beego "github.com/beego/beego/v2/server/web"
	_ "github.com/go-sql-driver/mysql"
	"kong-social-api/commons/global"
	cmodel "kong-social-api/modules/course/model"
	umodel "kong-social-api/modules/user/model"
	"kong-social-api/utils"
	"time"
)

// 初始化数据库连接
func InitMySQL() {
	// 如果是开发环境，就开启调式模式
	if global.Env == "dev" {
		orm.Debug = true
	}

	// 注册数据模型
	// 用户模型
	orm.RegisterModel(&umodel.User{})
	// 课程模型
	orm.RegisterModel(&cmodel.Course{})

	// 获取配置文件的mysql数据库的信息
	dbtype, _ := beego.AppConfig.String("mysql.type")
	dbusername, _ := beego.AppConfig.String("mysql.username")
	dbpassword, _ := beego.AppConfig.String("mysql.password")
	dbhost, _ := beego.AppConfig.String("mysql.host")
	dbport, _ := beego.AppConfig.String("mysql.port")
	dbname, _ := beego.AppConfig.String("mysql.name")
	dbconfig, _ := beego.AppConfig.String("mysql.config")

	// 获取连接字符串
	// root:123456@tcp(127.0.0.1:3306)/beego?charset=utf8
	mysqlConn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?%s", dbusername, dbpassword, dbhost, dbport, dbname, dbconfig)
	// 设置默认时区
	orm.DefaultTimeLoc = time.UTC
	fmt.Println("mysqlConn", mysqlConn)
	// 注册驱动类型是MYSQL
	orm.RegisterDriver(dbtype, orm.DRMySQL)
	// 数据库链接
	err := orm.RegisterDataBase("default", dbtype, mysqlConn)
	if err != nil {
		global.SugarLog.Error("数据库MYSQL连接失败，失败的原因是：%v", err)
		return
	}
	global.SugarLog.Debug("数据库MYSQL连接成功!!!")
	// 同步数据库表
	orm.RunSyncdb("default", false, true)

	// 初始化的时候新增一条数据到数据库
	// 创建orm对象
	mysql := orm.NewOrm()
	var count int
	mysql.Raw("select count(1) from xk_user where username='kong'").QueryRow(&count)
	if count == 0 {
		uuid := utils.GetUUID()
		md5Password := utils.Md5Slat("123456", uuid)
		user := new(umodel.User)
		user.ID = 1
		user.Uuid = uuid
		user.UserName = "kong"
		user.NickName = "孔QQ"
		user.Slat = uuid
		user.Telephone = "15235476545"
		user.Password = md5Password
		user.Avatar = "/avatar/01.png"
		user.BgImg = "/avatar/01.png"
		user.Male = 1
		// 保存用户
		mysql.Insert(user)
	}
}
